using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Xml.Serialization;

namespace TreeBuilder
{
    public interface INode : IXmlSerializable, IPrintable, IBindable, ISelectable
    {
		DependencyObject Parent { get; }
		Guid Guid { get; set; }
		
		Point TopCenter { get; set; }
		Point Center { get; }
		Point BottomCenter { get; }
		Point RightCenter { get; }
		Point LeftCenter { get; }

		void OnTopCenterChanged();

		event Action<object, EventArgs> Delete;

		double ButtonPanelHeight { get; }

		bool NeedsCanvasAlignment { get; set; }

        Point? Offset { get; set; }
		bool IsBeingDragged { get; set; }
	    event Action<object, DragInitEventArgs> DragInit;
		event DragEventHandler DragOver;
	}
}